<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Reference</title>
    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
</head>

<body>
<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->

<div id="main">

<div id="navigation">


<h1>LuaDoc</h1>
<ul>
	
	<li><a href="../index.html">Index</a></li>
	
</ul>


<!-- Module list -->

<h1>Modules</h1>
<ul>

	<li>
		<a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
	</li>

	<li>
		<a href="../modules/luci.http.html">luci.http</a>
	</li>

	<li><strong>luci.http.protocol</strong></li>
	
	<li>
		<a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
	</li>

	<li>
		<a href="../modules/luci.http.protocol.date.html">luci.http.protocol.date</a>
	</li>

	<li>
		<a href="../modules/luci.http.protocol.mime.html">luci.http.protocol.mime</a>
	</li>

	<li>
		<a href="../modules/luci.i18n.html">luci.i18n</a>
	</li>

	<li>
		<a href="../modules/luci.ip.html">luci.ip</a>
	</li>

	<li>
		<a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
	</li>

	<li>
		<a href="../modules/luci.json.html">luci.json</a>
	</li>

	<li>
		<a href="../modules/luci.jsonc.html">luci.jsonc</a>
	</li>

	<li>
		<a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
	</li>

	<li>
		<a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
	</li>

	<li>
		<a href="../modules/luci.model.uci.html">luci.model.uci</a>
	</li>

	<li>
		<a href="../modules/luci.rpcc.html">luci.rpcc</a>
	</li>

	<li>
		<a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
	</li>

	<li>
		<a href="../modules/luci.sys.html">luci.sys</a>
	</li>

	<li>
		<a href="../modules/luci.sys.init.html">luci.sys.init</a>
	</li>

	<li>
		<a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
	</li>

	<li>
		<a href="../modules/luci.sys.net.html">luci.sys.net</a>
	</li>

	<li>
		<a href="../modules/luci.sys.process.html">luci.sys.process</a>
	</li>

	<li>
		<a href="../modules/luci.sys.user.html">luci.sys.user</a>
	</li>

	<li>
		<a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
	</li>

	<li>
		<a href="../modules/luci.util.html">luci.util</a>
	</li>

	<li>
		<a href="../modules/nixio.html">nixio</a>
	</li>

	<li>
		<a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
	</li>

	<li>
		<a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
	</li>

	<li>
		<a href="../modules/nixio.File.html">nixio.File</a>
	</li>

	<li>
		<a href="../modules/nixio.README.html">nixio.README</a>
	</li>

	<li>
		<a href="../modules/nixio.Socket.html">nixio.Socket</a>
	</li>

	<li>
		<a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
	</li>

	<li>
		<a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
	</li>

	<li>
		<a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
	</li>

	<li>
		<a href="../modules/nixio.bin.html">nixio.bin</a>
	</li>

	<li>
		<a href="../modules/nixio.bit.html">nixio.bit</a>
	</li>

	<li>
		<a href="../modules/nixio.crypto.html">nixio.crypto</a>
	</li>

	<li>
		<a href="../modules/nixio.fs.html">nixio.fs</a>
	</li>

</ul>



<!-- File list -->







</div><!-- id="navigation" -->

<div id="content">

<h1>Class <code>luci.http.protocol</code></h1>

<p></p>







<h2>Functions</h2>
<table class="function_list">

	<tr>
	<td class="name" nowrap><a href="#header_source">header_source</a>&nbsp;(sock)</td>
	<td class="summary">
 
Creates a ltn12 source from the given socket.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#mimedecode_message_body">mimedecode_message_body</a>&nbsp;(src, msg, filecb)</td>
	<td class="summary">
 
Decode a mime encoded http message body with multipart/form-data 
 
Content-Type.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#parse_message_body">parse_message_body</a>&nbsp;(src, msg, filecb)</td>
	<td class="summary">
 
Try to extract and decode a http message body from the given ltn12 source.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#parse_message_header">parse_message_header</a>&nbsp;(src)</td>
	<td class="summary">
 
Try to extract an http message header including information like protocol 
 
version, message headers and resulting CGI environment variables from the 
given ltn12 source.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urldecode">urldecode</a>&nbsp;(str, no_plus)</td>
	<td class="summary">
 
Decode an urlencoded string - optionally without decoding 
 
the "+" sign to " " - and return the decoded string.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urldecode_message_body">urldecode_message_body</a>&nbsp;(src, msg)</td>
	<td class="summary">
 
Decode an urlencoded http message body with application/x-www-urlencoded 
 
Content-Type.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urldecode_params">urldecode_params</a>&nbsp;(url, tbl)</td>
	<td class="summary">
 
Extract and split urlencoded data pairs, separated bei either "&" or ";" 
 
from given url or string.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urlencode">urlencode</a>&nbsp;(str)</td>
	<td class="summary">
 
Encode given string to x-www-urlencoded format.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urlencode_params">urlencode_params</a>&nbsp;(tbl)</td>
	<td class="summary">
 
Encode each key-value-pair in given table to x-www-urlencoded format, 
 
separated by "&".</td>
	</tr>

</table>






<br/>
<br/>


<h2><a name="functions"></a>Functions</h2>
<dl class="function">



<dt><a name="header_source"></a><strong>header_source</strong>&nbsp;(sock)</dt>
<dd>

 
Creates a ltn12 source from the given socket. The source will return it's 
 
data line by line with the trailing \r\n stripped of.


<h3>Parameters</h3>
<ul>
	
	<li>
	  sock: Readable network socket
	</li>
	
</ul>






<h3>Return value:</h3>
Ltn12 source function



</dd>




<dt><a name="mimedecode_message_body"></a><strong>mimedecode_message_body</strong>&nbsp;(src, msg, filecb)</dt>
<dd>

 
Decode a mime encoded http message body with multipart/form-data 
 
Content-Type. Stores all extracted data associated with its parameter name 
in the params table within the given message object. Multiple parameter
values are stored as tables, ordinary ones as strings. 
If an optional file callback function is given then it is feeded with the 
file contents chunk by chunk and only the extracted file name is stored 
within the params table. The callback function will be called subsequently 
with three arguments: 
 o Table containing decoded (name, file) and raw (headers) mime header data 
 o String value containing a chunk of the file data 
 o Boolean which indicates wheather the current chunk is the last one (eof)


<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
	<li>
	  msg: HTTP message object
	</li>
	
	<li>
	  filecb: File callback function (optional)
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Value indicating successful operation (not nil means "ok")
	
	<li>String containing the error if unsuccessful
	
</ol>



<h3>See also:</h3>
<ul>
	
	<li><a href="#parse_message_header">
		parse_message_header
	</a>
	
</ul>

</dd>




<dt><a name="parse_message_body"></a><strong>parse_message_body</strong>&nbsp;(src, msg, filecb)</dt>
<dd>

 
Try to extract and decode a http message body from the given ltn12 source. 
 
This function will examine the Content-Type within the given message object 
to select the appropriate content decoder. 
Currently the application/x-www-urlencoded and application/form-data 
mime types are supported. If the encountered content encoding can't be 
handled then the whole message body will be stored unaltered as "content" 
property within the given message object.


<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
	<li>
	  msg: HTTP message object
	</li>
	
	<li>
	  filecb: File data callback (optional, see mimedecode_message_body())
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Value indicating successful operation (not nil means "ok")
	
	<li>String containing the error if unsuccessful
	
</ol>



<h3>See also:</h3>
<ul>
	
	<li><a href="#parse_message_header">
		parse_message_header
	</a>
	
</ul>

</dd>




<dt><a name="parse_message_header"></a><strong>parse_message_header</strong>&nbsp;(src)</dt>
<dd>

 
Try to extract an http message header including information like protocol 
 
version, message headers and resulting CGI environment variables from the 
given ltn12 source.


<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
</ul>






<h3>Return value:</h3>
HTTP message object



<h3>See also:</h3>
<ul>
	
	<li><a href="#parse_message_body">
		parse_message_body
	</a>
	
</ul>

</dd>




<dt><a name="urldecode"></a><strong>urldecode</strong>&nbsp;(str, no_plus)</dt>
<dd>

 
Decode an urlencoded string - optionally without decoding 
 
the "+" sign to " " - and return the decoded string.


<h3>Parameters</h3>
<ul>
	
	<li>
	  str: Input string in x-www-urlencoded format
	</li>
	
	<li>
	  no_plus: Don't decode "+" signs to spaces
	</li>
	
</ul>






<h3>Return value:</h3>
The decoded string



<h3>See also:</h3>
<ul>
	
	<li><a href="#urlencode">
		urlencode
	</a>
	
</ul>

</dd>




<dt><a name="urldecode_message_body"></a><strong>urldecode_message_body</strong>&nbsp;(src, msg)</dt>
<dd>

 
Decode an urlencoded http message body with application/x-www-urlencoded 
 
Content-Type. Stores all extracted data associated with its parameter name 
in the params table within the given message object. Multiple parameter
values are stored as tables, ordinary ones as strings.


<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
	<li>
	  msg: HTTP message object
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Value indicating successful operation (not nil means "ok")
	
	<li>String containing the error if unsuccessful
	
</ol>



<h3>See also:</h3>
<ul>
	
	<li><a href="#parse_message_header">
		parse_message_header
	</a>
	
</ul>

</dd>




<dt><a name="urldecode_params"></a><strong>urldecode_params</strong>&nbsp;(url, tbl)</dt>
<dd>

 
Extract and split urlencoded data pairs, separated bei either "&" or ";" 
 
from given url or string. Returns a table with urldecoded values. 
Simple parameters are stored as string values associated with the parameter 
name within the table. Parameters with multiple values are stored as array 
containing the corresponding values.


<h3>Parameters</h3>
<ul>
	
	<li>
	  url: The url or string which contains x-www-urlencoded form data
	</li>
	
	<li>
	  tbl: Use the given table for storing values (optional)
	</li>
	
</ul>






<h3>Return value:</h3>
Table containing the urldecoded parameters



<h3>See also:</h3>
<ul>
	
	<li><a href="#urlencode_params">
		urlencode_params
	</a>
	
</ul>

</dd>




<dt><a name="urlencode"></a><strong>urlencode</strong>&nbsp;(str)</dt>
<dd>

 
Encode given string to x-www-urlencoded format. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  str: String to encode
	</li>
	
</ul>






<h3>Return value:</h3>
String containing the encoded data



<h3>See also:</h3>
<ul>
	
	<li><a href="#urldecode">
		urldecode
	</a>
	
</ul>

</dd>




<dt><a name="urlencode_params"></a><strong>urlencode_params</strong>&nbsp;(tbl)</dt>
<dd>

 
Encode each key-value-pair in given table to x-www-urlencoded format, 
 
separated by "&". Tables are encoded as parameters with multiple values by 
repeating the parameter name with each value.


<h3>Parameters</h3>
<ul>
	
	<li>
	  tbl: Table with the values
	</li>
	
</ul>






<h3>Return value:</h3>
String containing encoded values



<h3>See also:</h3>
<ul>
	
	<li><a href="#urldecode_params">
		urldecode_params
	</a>
	
</ul>

</dd>


</dl>





</div> <!-- id="content" -->

</div> <!-- id="main" -->

<div id="about">
	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
</div> <!-- id="about" -->

</div> <!-- id="container" -->
</body>
</html>
